let express = require('express')
let serve = express()
serve.use(express.static('./static'))

serve.use(express.json(), express.urlencoded())

// 导入session，用于验证
let session = require('express-session')
// 配置session参数
let sessionOption = session({
    name: 'session_id',
    secret: 'wssb996',
    cookie: {
        // 设置过期时间 1小时后过期
        maxAge: 1000 * 60 *60
    },
    // 每次访问session,过期时间都会刷新
    rolling: true,
    // true的时候表示一开始访问就生成cookie,不过这个cookie是无效的，相当于没激活
    saveUninitialized: true

})

// 使用session的配置.自动在req请求中，添加一个session属性
serve.use(sessionOption)

// 设置白名单
let white = ['/api/nav/navType','/api/article/getAllwz','/api/article/getOtherWz' , '/api/user/login', '/api/article/typeWz', '/api/user/register','/api/article/wenZangType']
// 统一验证session
serve.use((req, res, next) => {
    // console.log(req._parsedUrl.pathname);
    let url = req._parsedUrl.pathname;
    if (white.includes(url) || url.includes('/api/user/check')|| url.includes('/api/article/getDetail') ) {
        next();
        return
    }
   // 进行session验证 因为session会自动发送过来，同时，它自动解析，与之相对的token就必须手动发送和手动解析
    //   功能完成之后把这句代码打开
     if(!req.session.isLogin){
         res.send({
             code:400,
             msg:'未登录'
         })
         return
     }
        // 继续下一步，真正请求的接口
        next();
    
})

// 导入user相关的文件
let user = require('./api/user')
serve.use('/api/user', user)

let nav = require('./api/nav')
serve.use('/api/nav', nav)

let article = require('./api/article')
serve.use('/api/article', article)

let sc = require('./api/sc')
serve.use('/api/sc', sc)

serve.listen(9091, () => {
    console.log('后端9091端口已经开启');
})